#ifndef __W806HAL_H__
#define __W806HAL_H__

#ifdef ROOT 
#define EXTR 
#else
#define EXTR                        extern 
#endif

#define WEAK 			__attribute__((weak))

#include "wm_hal.h"

#define OUT_PB0(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, b);}	
#define OUT_PB1(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, b);}	
#define OUT_PB2(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, b);}	
#define OUT_PB3(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, b);}	
#define OUT_PB4(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, b);}	
#define OUT_PB5(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, b);}	
#define OUT_PB6(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, b);}	
#define OUT_PB7(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, b);}	
#define OUT_PB8(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, b);}	
#define OUT_PB9(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, b);}	
#define OUT_PB10(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, b);}	
#define OUT_PB11(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, b);}	
#define OUT_PB12(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, b);}	
#define OUT_PB13(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, b);}	
#define OUT_PB14(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, b);}	
#define OUT_PB15(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, b);}	
#define OUT_PB16(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_16, b);}	
#define OUT_PB17(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_17, b);}	
#define OUT_PB18(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_18, b);}	
#define OUT_PB19(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_19, b);}	
#define OUT_PB20(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_20, b);}	
#define OUT_PB21(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_21, b);}	
#define OUT_PB22(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_22, b);}	
#define OUT_PB23(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_23, b);}	
#define OUT_PB24(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_24, b);}	
#define OUT_PB25(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_25, b);}	
#define OUT_PB26(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_26, b);}	
#define OUT_PB27(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_27, b);}	
#define OUT_PB28(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_28, b);}	
#define OUT_PB29(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_29, b);}	
#define OUT_PB30(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_30, b);}	
#define OUT_PB31(b)				{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_31, b);}	

#define IN_PB0()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0))
#define IN_PB1()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1))
#define IN_PB2()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2))
#define IN_PB3()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3))
#define IN_PB4()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4))
#define IN_PB5()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_5))
#define IN_PB6()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_6))
#define IN_PB7()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_7))
#define IN_PB8()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8))
#define IN_PB9()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_9))
#define IN_PB10()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_10))
#define IN_PB11()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_11))
#define IN_PB12()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_12))
#define IN_PB13()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_13))
#define IN_PB14()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_14))
#define IN_PB15()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_15))
#define IN_PB16()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_16))
#define IN_PB17()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_17))
#define IN_PB18()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_18))
#define IN_PB19()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_19))
#define IN_PB20()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_20))
#define IN_PB21()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_21))
#define IN_PB22()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_22))
#define IN_PB23()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_23))
#define IN_PB24()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_24))
#define IN_PB25()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_25))
#define IN_PB26()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_26))
#define IN_PB27()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_27))
#define IN_PB28()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_28))
#define IN_PB29()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_29))
#define IN_PB30()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_30))
#define IN_PB31()				(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_31))



void CORET_IRQHandler(void);
void GPIOA_IRQHandler(void);
void GPIOB_IRQHandler(void);
void UART0_IRQHandler(void);
void UART1_IRQHandler(void);
void UART2_4_IRQHandler(void);
void WDG_IRQHandler(void);
void TIM0_5_IRQHandler(void);
void ADC_IRQHandler(void);
void PMU_IRQHandler(void);
void TOUCH_IRQHandler(void);
void MUSDELAY(int usTime);									// 延迟指定的微秒

#endif		// #define __W806HAL_H__